// RemPrn.h

#include <windows.h>

// struct definitions
typedef struct tagDRVFILE
{
   LPTSTR lpDrvFile;
   BOOL  bDelete;
} DRVFILE, *PDRVFILE;

typedef struct tagDRIVERDATA
    {
    TCHAR     name[256];
    TCHAR     Version[80];
    TCHAR     key[256];
    TCHAR     dir[256];
    TCHAR     drvfile[256];
    TCHAR     datfile[256];
    TCHAR     cfgfile[256];
    TCHAR     hlpfile[256];
    BYTE     depfiles[1024];
    DWORD    version;
} DRIVERDATA, *PDRIVERDATA;

// function declarations
int PASCAL Reboot ( HWND hWnd ); // ??

void LoadLangStr( HWND hWnd, UINT uWnd );
int  GetPrnVersion( LPTSTR lpPrnVersion, int strLength );
BOOL UninstallAllSelectedPrinterDrivers( HWND hWnd, int iControlID );	// CC
BOOL CheckForInstalledPrinters( HWND hwnd, PDRIVERDATA p );
BOOL DelFile( HWND hwnd, LPCTSTR filename, BOOL CheckPPD );	// CC
BOOL MUninstall( HWND hWnd, int idx );
//
BOOL MUninstallExt( HWND hWnd, int idx );
BOOL EnumDrvFiles( PDRIVERDATA p, PDRVFILE pDrvFiles, LPWORD lpwEntries );
//
BOOL CALLBACK AboutDlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
BOOL CALLBACK MainDlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );

// static (local) functions
static void DestroyList( HWND hwnd );
static BOOL DeleteDrvFile( HWND hwnd, PDRIVERDATA p );
static BOOL DeleteCfgFile( HWND hwnd, PDRIVERDATA p );
static BOOL DeleteDatFile( HWND hwnd, PDRIVERDATA p );
static BOOL DeleteHlpFile( HWND hwnd, PDRIVERDATA p );
static BOOL DeleteKey( HWND hwnd, PDRIVERDATA p );
static void RemoveUserDevModes( HWND hwnd );
static void RemoveUserPrintersSettings( HWND hwnd, TCHAR* printername );
static void Uninstall( HWND hwnd );
static void InitList( HWND hwnd );
